
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package src;

import ClasesAModificar.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Iterator;
import java.util.LinkedList;

/**
 *
 * @author Alex Furikuri
 */
public class InfoMedianteID {
    
 
    public static DocumentoModificar dameDocumento(int idDo)
    {
        DocumentoModificar doM = null;
        int idDes =-1;
        String tituloD="";
        String contD="";
        int idCat =-1;
        int idFic =-1;
        String catalogacionNombre="";
        String catalogacionTipo="";
        String catalogacionFuente="";
        String catalogacionURI="";
        String catalogacionFormato="";
    
        String ficheroNombre="";
        String ficheroURI="";
        String ficheroFormato="";
        
        String listaAcontecimientos="";
        String listaPersonajes="";
        String listaColectivos="";
        
        LinkedList<Integer> listaAuxiliarAcontecimientos = new LinkedList<>();
        LinkedList<Integer> listaAuxiliarPersonajes = new LinkedList<>();
        LinkedList<Integer> listaAuxiliarColectivos = new LinkedList<>();
        try
        {
            Connection conexion = DriverManager.getConnection("jdbc:mysql://localhost", "root", "");
            conexion.setCatalog(Core.nombreBD);
            Statement st = conexion.createStatement();
        
            
            String busqueda = "SELECT * "+
                              "FROM documento Doc "+
                              "WHERE Doc.IDDocumento="+idDo;
            ResultSet rs = st.executeQuery(busqueda); 
            while(rs.next())
            {
                idDes = Integer.parseInt(rs.getString("Doc.IDDescripcion"));   
            }   
            rs.close();
            
            
            busqueda = "SELECT * "+
                       "FROM descripcion Des "+
                       "WHERE Des.IDDescripcion="+idDes;
            rs = st.executeQuery(busqueda); 
            while(rs.next())
            {
                tituloD = rs.getString("Des.Titulo");   
                contD = rs.getString("Des.DescripcionContenido");   
            }   
            rs.close();
            
            
            busqueda = "SELECT * "+
                       "FROM rdescripcioncatalogacion RDC, descripcion Des "+
                       "WHERE Des.IDDescripcion=RDC.IDDescripcion";
            rs = st.executeQuery(busqueda); 
            while(rs.next())
            {
                idCat = Integer.parseInt(rs.getString("RDC.IDCatalogacion"));    
            }   
            rs.close();
            
            
            busqueda = "SELECT * "+
                       "FROM gatalogacion G "+
                       "WHERE G.IDCatalogacion="+idCat;
            rs = st.executeQuery(busqueda); 
            while(rs.next())
            {
                catalogacionFormato = rs.getString("G.FormatoArchivo");  
                catalogacionFuente = rs.getString("G.Fuente");
                catalogacionNombre = rs.getString("G.Nombre");
                catalogacionTipo = rs.getString("G.Tipo");
                catalogacionURI = rs.getString("G.URI");
            }   
            rs.close();
            
            
            busqueda = "SELECT * "+
                       "FROM rdescripcionficheros RDF, descripcion Des "+
                       "WHERE Des.IDDescripcion=RDF.IDDescripcion";
            rs = st.executeQuery(busqueda); 
            while(rs.next())
            {
                idFic = Integer.parseInt(rs.getString("RDF.IDFichero"));    
            }   
            rs.close();
            
            
            busqueda = "SELECT * "+
                       "FROM fichero F "+
                       "WHERE F.IDFichero="+idFic;
            rs = st.executeQuery(busqueda); 
            while(rs.next())
            {
                ficheroFormato = rs.getString("F.Formato");  
                ficheroNombre = rs.getString("F.Nombre");
                ficheroURI = rs.getString("F.URI");
            }   
            rs.close();
            
            
            busqueda = "SELECT * "+
                       "FROM rdocumentoacontecimeinto RDA "+
                       "WHERE RDA.IDDocumento="+idDo;
            rs = st.executeQuery(busqueda); 
            while(rs.next())
            {
                listaAuxiliarAcontecimientos.add(Integer.parseInt(rs.getString("RDA.IDAcontecimiento")));    
            }   
            rs.close();
            
            Iterator i = listaAuxiliarAcontecimientos.iterator();
            while(i.hasNext())
            {
                int idAc =(int)i.next();
                busqueda = "SELECT * "+
                        "FROM acontecimiento A "+
                        "WHERE A.IDAcontecimiento="+idAc;
                rs = st.executeQuery(busqueda); 
                while(rs.next())
                {
                    listaAcontecimientos += idAc + ": "+rs.getString("A.Nombre")+"\n";
                }   
                rs.close();
            }
            
            busqueda = "SELECT * "+
                       "FROM rdocumentoacolectivo RDC "+
                       "WHERE RDC.IDDocumento="+idDo;
            rs = st.executeQuery(busqueda); 
            while(rs.next())
            {
                listaAuxiliarColectivos.add(Integer.parseInt(rs.getString("RDC.IDColectivo")));    
            }   
            rs.close();
            
            Iterator j = listaAuxiliarColectivos.iterator();
            while(j.hasNext())
            {
                int idCo =(int)j.next();
                busqueda = "SELECT * "+
                        "FROM colectivo C "+
                        "WHERE C.IDColectivo="+idCo;
                rs = st.executeQuery(busqueda); 
                while(rs.next())
                {
                    listaColectivos += idCo + ": "+rs.getString("C.Nombre")+"\n";
                }   
                rs.close();
            }
            
            
            busqueda = "SELECT * "+
                       "FROM rdocumentopersonajes RDP "+
                       "WHERE RDP.IDDocumento="+idDo;
            rs = st.executeQuery(busqueda); 
            while(rs.next())
            {
                listaAuxiliarPersonajes.add(Integer.parseInt(rs.getString("RDP.IDPersonaje")));    
            }   
            rs.close();
            
            Iterator t = listaAuxiliarPersonajes.iterator();
            while(t.hasNext())
            {
                int idPe =(int)t.next();
                busqueda = "SELECT * "+
                        "FROM personaje P "+
                        "WHERE P.IDPersonaje="+idPe;
                rs = st.executeQuery(busqueda); 
                while(rs.next())
                {
                    listaPersonajes += idPe + ": "+rs.getString("P.NombreYApellidos")+"\n";
                }   
                rs.close();
            }            
            
            conexion.close();
            st.close();
            
            doM = new DocumentoModificar(idDo, idDes, idCat, idFic, tituloD, contD, 
                                         catalogacionNombre, catalogacionTipo, catalogacionFuente, catalogacionURI, catalogacionFormato,
                                         ficheroNombre, ficheroURI, ficheroFormato,
                                         listaAcontecimientos,listaPersonajes,listaColectivos
                    );
        }
        catch(Exception e)
        {
            System.out.println("Fallo en dameDocumento: "+e.toString());
        }
        return doM;
    }    
    
    public static AcontecimientoModificar dameAcontecimiento(int idAc)
    {
        AcontecimientoModificar AcM = null;
        String nombre="";
        int idDesc = -1;
        int FIni=-1;
        int FFiN=-1;
        String descripcion="";
        String listaFicheros = "";
        LinkedList<Integer> listaAuxiliarFicheros = new LinkedList<>();
        try
        {
            Connection conexion = DriverManager.getConnection("jdbc:mysql://localhost", "root", "");
            conexion.setCatalog(Core.nombreBD);
            Statement st = conexion.createStatement();
        
            
            String busqueda = "SELECT * "+
                              "FROM acontecimiento A "+
                              "WHERE A.IDAcontecimiento="+idAc;
            ResultSet rs = st.executeQuery(busqueda); 
            while(rs.next())
            {
                FFiN = Integer.parseInt(rs.getString("A.FechaFinalizacion"));   
                FIni = Integer.parseInt(rs.getString("A.FechaComienzo"));
                nombre = rs.getString("A.Nombre");
                idDesc = Integer.parseInt(rs.getString("A.IDDescripcion"));
            }   
            rs.close();
            
            
            busqueda = "SELECT * "+
                       "FROM descripcion D "+
                       "WHERE D.IDDescripcion="+idDesc;
            rs = st.executeQuery(busqueda); 
            while(rs.next())
            {
                descripcion = rs.getString("D.DescripcionContenido");
            }   
            rs.close();
            
            
            busqueda = "SELECT * "+
                       "FROM racontecimientofichero RAF "+
                       "WHERE RAF.IDAcontecimiento="+idAc;
            rs = st.executeQuery(busqueda); 
            while(rs.next())
            {
                listaAuxiliarFicheros.add(Integer.parseInt(rs.getString("RAF.IDFichero")));
            }   
            rs.close();
            
            
            Iterator i = listaAuxiliarFicheros.iterator();
            while( i.hasNext())
            {
                int idF = (int)i.next();
                busqueda = "SELECT * "+
                           "FROM fichero F "+
                           "WHERE F.IDFichero="+idF;
                rs = st.executeQuery(busqueda); 
                while(rs.next())
                {
                    listaFicheros+= idF+": ";
                    listaFicheros+=rs.getString("F.Nombre") + "\n";
                }   
                rs.close();
            }   
            
            
                conexion.close();
                st.close();
                AcM = new AcontecimientoModificar(idAc, nombre, descripcion, idDesc, FIni, FFiN, listaFicheros);
        }
        catch(Exception e)
        {
            System.out.println("Fallo en dameAcontecimiento: "+e.toString());
        }
        return AcM;
    
    }
    
    
    public static ColectivoModificar dameColectivo(int idCo)
    {
        ColectivoModificar CoM = null;
        String nombre="";
        String desc="";
        int idDes=-1;
        String listaFicheros="";
        LinkedList<Integer> listaAuxiliarFicheros = new LinkedList<>();
        try
        {
            Connection conexion = DriverManager.getConnection("jdbc:mysql://localhost", "root", "");
            conexion.setCatalog(Core.nombreBD);
            Statement st = conexion.createStatement();
            
            
            String busqueda = "SELECT * "+
                              "FROM colectivo C "+
                              "WHERE C.IDColectivo="+idCo;
            ResultSet rs = st.executeQuery(busqueda); 
            while(rs.next())
            {
                nombre = rs.getString("C.Nombre");
                idDes = Integer.parseInt(rs.getString("C.IDDescripcion"));
            }   
            rs.close();
            
            
            busqueda = "SELECT * "+
                       "FROM descripcion D "+
                       "WHERE D.IDDescripcion="+idDes;
            rs = st.executeQuery(busqueda); 
            while(rs.next())
            {
                desc = rs.getString("D.DescripcionContenido");
            }   
            rs.close();
            
            
            busqueda = "SELECT * "+
                       "FROM rcolectivofichero RCF "+
                       "WHERE RCF.IDColectivo="+idCo;
            rs = st.executeQuery(busqueda); 
            while(rs.next())
            {
                listaAuxiliarFicheros.add(Integer.parseInt(rs.getString("RCF.IDFichero")));
            }   
            rs.close();
            
            
            Iterator i = listaAuxiliarFicheros.iterator();
            while( i.hasNext())
            {
                int idF = (int)i.next();
                busqueda = "SELECT * "+
                           "FROM fichero F "+
                           "WHERE F.IDFichero="+idF;
                rs = st.executeQuery(busqueda); 
                while(rs.next())
                {
                    listaFicheros+= idF+": ";
                    listaFicheros+=rs.getString("F.Nombre") + "\n";
                }   
                rs.close();
            }   
            
            
                conexion.close();
                st.close();  
                CoM = new ColectivoModificar(nombre, desc, idDes, listaFicheros,idCo);
        }
        catch(Exception e)
        {
            System.out.println("Fallo en dameColectivo: "+e.toString());
        }
        return CoM;
    }
    
    public static PersonajeMoficar damePersonaje(int idPe)
    {
        PersonajeMoficar PeM = null;
        String NombreYApellidos="";
        int FNac=-1;
        String LNac="";
        int FDef=-1;
        String LDef="";
        String Biografia="";
        String listaEmpezarCargos="";
        String listaAlias="";
        String listaCargos="";
        
        LinkedList<Integer> listaAuxiliarCargos = new LinkedList<>();
        try
        {
            Connection conexion = DriverManager.getConnection("jdbc:mysql://localhost", "root", "");
            conexion.setCatalog(Core.nombreBD);
            Statement st = conexion.createStatement();
            
            
            String busqueda = "SELECT * "+
                              "FROM personaje P "+
                              "WHERE P.IDPersonaje="+idPe;
            ResultSet rs = st.executeQuery(busqueda); 
            while(rs.next())
            {
                NombreYApellidos = rs.getString("P.NombreYApellidos");
                LNac = rs.getString("P.LugarNacimiento");
                LDef = rs.getString("P.LugarDefuncion");
                Biografia = rs.getString("P.Biografia");
                
                FNac = Integer.parseInt(rs.getString("P.FechaNacimiento"));
                FDef = Integer.parseInt(rs.getString("P.FechaDefuncion"));
            }   
            rs.close();
            
            
            busqueda = "SELECT * "+
                       "FROM rpersonajealias RPA "+
                       "WHERE RPA.IDPersonaje="+idPe;
            rs = st.executeQuery(busqueda); 
            while(rs.next())
            {
                listaAlias+= rs.getString("RPA.Alias") +"\n";
            }   
            rs.close();
            
            
            busqueda = "SELECT * "+
                       "FROM rpersonajecargos RPC "+
                       "WHERE RPC.IDPersonaje="+idPe;
            rs = st.executeQuery(busqueda); 
            while(rs.next())
            {
                listaAuxiliarCargos.add(Integer.parseInt(rs.getString("RPC.IDCargo")));
                
                listaEmpezarCargos+= rs.getString("RPC.IDCargo") + ": ";
                listaEmpezarCargos+= "Comienzo-"+rs.getString("RPC.FechaComienzo") + " ";
                listaEmpezarCargos+= "Fin-"+rs.getString("RPC.FechaFinal") + ": \n";
            }   
            rs.close();
            
            
            Iterator i = listaAuxiliarCargos.iterator();
            while( i.hasNext())
            {
                int idC = (int)i.next();
                busqueda = "SELECT * "+
                           "FROM cargo C "+
                           "WHERE C.IDCargo="+idC;
                rs = st.executeQuery(busqueda); 
                while(rs.next())
                {
                    listaCargos+= idC+": ";
                    listaCargos+=rs.getString("C.Nombre") + "\n";
                }   
                rs.close();
            }   
            
            
            conexion.close();
            st.close();  
            PeM = new PersonajeMoficar(NombreYApellidos, FNac, LNac, FDef, LDef, Biografia,listaAlias,listaEmpezarCargos, listaCargos, idPe);
        }
        catch(Exception e)
        {
            System.out.println("Fallo en damePersonaje: "+e.toString());
        }
        return PeM;
    }
 
}

